package com.hucc.redislock;

import java.util.concurrent.TimeUnit;

/**
 * redis 锁
 */
public interface RedisLock {

    /**
     * 获取锁 如果获取不到，进入阻塞状态，直到获取到
     */
    void lock();

    /**
     * 释放锁
     */
    void unlock();

    /**
     * 尝试获取锁，获取成功返回true，失败返回false
     * @return
     */
    boolean tryLock();

    /**
     * 在规定时间内获取锁，获取成功返回true,失败返回false
     */
    boolean tryLock(long millisecond);

    /**
     * 能够相应中断的lock
     */
    void lockInterruptibly() throws InterruptedException;
}
